import type {
  EntityApi,
  EntityPage,
  EntityReq,
  EntityModel,
  EntityTotal,
  EntityKey,
  EntityKeyList,
  EntityCreateReq,
  EntityUpdateReq,
} from "jmash-core";

export interface OperationApi extends EntityApi {}

// 操作的参数
export interface OperationReq extends EntityReq {
  tenant?: string; // 租户
  operationCode?: string; // 编码
  likeOperationName?: string; // 名称模糊查询
}

// 模块管理分页
export interface OperationPage extends EntityPage {
  // 页数
  curPage: number;
  // 条数
  pageSize: number;
  // 当前页内容
  results: Array<OperationModel>;
  // 总记录数
  totalSize: number;
  // 本页小计
  subTotalDto: OperationModelTotal;
  // 合计
  totalDto: OperationModelTotal;
}

// 合计
export interface OperationModelTotal extends EntityTotal {
  // 总记录数
  totalSize: number;
}

// 新增查询
export interface OperationCreateReq extends EntityCreateReq {
  tenant?: string; // 租户
  requestId?: string; // 用于检测重复请求的唯一字符串ID
  operationCode?: string; // 编码
  operationName?: string; // 名称
}

// 编辑查询
export interface OperationUpdateReq extends EntityUpdateReq {
  tenant?: string; // 租户
  operationId?: string; // 操作ID
  requestId?: string; // 用于检测重复请求的唯一字符串ID
  updateMask: string; // 更新字段掩码
  operationCode?: string; // 编码
  operationName?: string; // 名称
}

export type OperationFormReq = OperationCreateReq | OperationUpdateReq;

// 操作表实体
export interface OperationModel extends EntityModel {
  // 操作ID
  operationId?: string;
  // 操作编码
  operationCode?: string;
  // 操作名称
  operationName?: string;
  // order_by
  orderBy?: number;
}

// 操作表主键
export interface OperationKey extends EntityKey {
  // 租户
  tenant?: string;
  operationId?: string;
}

// 操作表主键列表
export interface OperationKeyList extends EntityKeyList {
  // 租户
  tenant?: string;
  operationId?: string[];
}

export interface OperationMoveKey {
  // 租户
  tenant?: string;
  operationId?: string;
  up?: boolean;
}
